package com.sn.author.service.dao;
import com.sn.author.common.enums.TaskTypeEnum;
import com.sn.author.domain.dto.TaskBasisInfo;
import com.sn.author.domain.taskEntity.TaskModel;
import com.sn.author.domain.taskEntity.TaskProcess;
import com.sn.author.domain.vo.TaskVo;
import org.springframework.lang.NonNull;

import java.util.List;

/**
 * @Author xiaom
 * @Date 2020/9/21 19:10
 * @Version 1.0.0
 * @Description <>
 **/
public interface TaskService {

    /**
     * 生成任务
     */
    void generateJobToPool(List<TaskModel> jobs, Long taskId);

    /**
     * 获取任务进度
     * @param taskId   任务ID
     * @param taskType 任务类型
     * @return
     */
    TaskProcess getProcessMessage(@NonNull Long taskId,@NonNull Integer taskType);

    /**
     * 停止任务
     * @param taskId  任务ID
     * @param taskType 任务类型
     */
    void stopTask(String taskId, Integer taskType);

    /**
     * 暂停任务
     * @param taskType 任务类型
     * @param taskId 任务id
     */
    Boolean stop(String taskId, Integer taskType);


    /**
     * 开启关注
     * @param taskVo
     * @return
     */
    TaskBasisInfo start(TaskVo taskVo);

    /**
     * 更新任务状态
     * @param taskId
     * @param status
     */
    void updateTaskStatusByTaskId(String taskId,Integer status);

    /**
     * 获取任务描述
     * @param taskType  任务类型
     */
    static String getTaskDesc(Integer taskType){
        return TaskTypeEnum.match(taskType).get().getDesc();
    }

    static String getTaskMsg(Integer taskType){
        return "开始执行" + getTaskDesc(taskType) + "任务";
    }
}
